package bean;

import java.io.Serializable;

import Persistencia.AdmPersistenciaCategoria;

public class Categoria implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	//lo puse para la base de datos, en el programa no lo uso, si no sirve se saca
	private Long id;
	
	private String codigo;
	private String tipo;
	private float pesoInicialMacho;
	private float pesoInicialHembra;
	private float pesoFinalMacho;
	private float pesoFinalHembra;
	private float gananciaDiariaMacho;
	private float gananciaDiariaHembra;
	
	public Categoria(String codigo, String tipo, float pesoInicialMacho,
			float pesoInicialHembra, float pesoFinalMacho,
			float pesoFinalHembra) {
		
		this.codigo = codigo;
		this.tipo = tipo;
		this.pesoInicialMacho = pesoInicialMacho;
		this.pesoInicialHembra = pesoInicialHembra;
		this.pesoFinalMacho = pesoFinalMacho;
		this.pesoFinalHembra = pesoFinalHembra;
		this.gananciaDiariaMacho = 0;
		this.gananciaDiariaHembra = 0;
	}
	
	public Categoria(){}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public void setCodigo(String codigo) {
		this.codigo = codigo;
	}

	public String getCodigo() {
		return codigo;
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public float getPesoInicialMacho() {
		return pesoInicialMacho;
	}

	public void setPesoInicialMacho(float pesoInicialMacho) {
		this.pesoInicialMacho = pesoInicialMacho;
	}

	public float getPesoInicialHembra() {
		return pesoInicialHembra;
	}

	public void setPesoInicialHembra(float pesoInicialHembra) {
		this.pesoInicialHembra = pesoInicialHembra;
	}

	public float getPesoFinalMacho() {
		return pesoFinalMacho;
	}

	public void setPesoFinalMacho(float pesoFinalMacho) {
		this.pesoFinalMacho = pesoFinalMacho;
	}

	public float getPesoFinalHembra() {
		return pesoFinalHembra;
	}

	public void setPesoFinalHembra(float pesoFinalHembra) {
		this.pesoFinalHembra = pesoFinalHembra;
	}

	public float getGananciaDiariaMacho() {
		return gananciaDiariaMacho;
	}

	public void setGananciaDiariaMacho(float gananciaDiariaMacho) {
		this.gananciaDiariaMacho = gananciaDiariaMacho;
	}

	public float getGananciaDiariaHembra() {
		return gananciaDiariaHembra;
	}

	public void setGananciaDiariaHembra(float gananciaDiariaHembra) {
		this.gananciaDiariaHembra = gananciaDiariaHembra;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
		result = prime * result + Float.floatToIntBits(gananciaDiariaHembra);
		result = prime * result + Float.floatToIntBits(gananciaDiariaMacho);
		result = prime * result + Float.floatToIntBits(pesoFinalHembra);
		result = prime * result + Float.floatToIntBits(pesoFinalMacho);
		result = prime * result + Float.floatToIntBits(pesoInicialHembra);
		result = prime * result + Float.floatToIntBits(pesoInicialMacho);
		result = prime * result + ((tipo == null) ? 0 : tipo.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Categoria other = (Categoria) obj;
		if (codigo == null) {
			if (other.codigo != null)
				return false;
		} else if (!codigo.equals(other.codigo))
			return false;
		if (Float.floatToIntBits(gananciaDiariaHembra) != Float
				.floatToIntBits(other.gananciaDiariaHembra))
			return false;
		if (Float.floatToIntBits(gananciaDiariaMacho) != Float
				.floatToIntBits(other.gananciaDiariaMacho))
			return false;
		if (Float.floatToIntBits(pesoFinalHembra) != Float
				.floatToIntBits(other.pesoFinalHembra))
			return false;
		if (Float.floatToIntBits(pesoFinalMacho) != Float
				.floatToIntBits(other.pesoFinalMacho))
			return false;
		if (Float.floatToIntBits(pesoInicialHembra) != Float
				.floatToIntBits(other.pesoInicialHembra))
			return false;
		if (Float.floatToIntBits(pesoInicialMacho) != Float
				.floatToIntBits(other.pesoInicialMacho))
			return false;
		if (tipo == null) {
			if (other.tipo != null)
				return false;
		} else if (!tipo.equals(other.tipo))
			return false;
		return true;
	}

	@Override
	public String toString() {
		return "Categoria [codigo=" + codigo + ", gananciaDiariaHembra="
				+ gananciaDiariaHembra + ", gananciaDiariaMacho="
				+ gananciaDiariaMacho + ", pesoFinalHembra=" + pesoFinalHembra
				+ ", pesoFinalMacho=" + pesoFinalMacho + ", pesoInicialHembra="
				+ pesoInicialHembra + ", pesoInicialMacho=" + pesoInicialMacho
				+ ", tipo=" + tipo + "]";
	}

	public void modificarCategoria(String tipo, float pIM, float pIH, float pFM, float pFH){
		setTipo(tipo);
		setPesoInicialMacho(pIM);
		setPesoInicialHembra(pIH);
		setPesoFinalMacho(pFM);
		setPesoFinalHembra(pFH);
		AdmPersistenciaCategoria.getInstancia().update(this);
	}
	
	public void eliminarCategoria()
	{
		AdmPersistenciaCategoria.getInstancia().delete(this);
	}
	
}
